﻿using NewLife.Agent;
using NewLife.Log;
using NewLife.Threading;

namespace newlife.service.console
{
    /// <summary>
    /// 定时服务（以 Windows 为例，支持 Linux）
    /// 备注：在启动的控制台里安装和卸载服务后，需要刷新一下服务页面才看得到
    /// </summary>
    public class MyService : ServiceBase
    {
        public MyService()
        {
            ServiceName = "XAgent";
            DisplayName = "新生命服务代理"; // 用这个名称去服务页面搜索
            Description = "用于承载各种服务的服务代理！";
        }

        #region 核心

        private TimerX? _timer;

        public override void StartWork(string reason)
        {
            //WriteLog("业务开始！"); 如果只是用日志记录服务开始，可以不用，因为内部会记录一遍

            // 5 秒后开始，每 60 秒执行一次（异步）
            _timer = new TimerX(DoWork, null, 5_000, 60_000) { Async = true };

            base.StartWork(reason);
        }

        private void DoWork(object? state)
        {
            XTrace.WriteLine("业务逻辑处理中...");
        }

        public override void StopWork(string reason)
        {
            //WriteLog("业务结束！");

            _timer?.Dispose();

            base.StopWork(reason);
        }

        #endregion
    }
}
